package org.snake.spring.framework.webmvc.servlet;

import java.io.File;
import java.util.Objects;

/**
 * 视图转换器对象
 *
 * @author Ray
 */
public class RAYViewResolver
{

    /**
     * 默认的视图后缀
     */
    private final String DEFAULT_TEMPLATE_SUFFIX = ".html";

    /**
     * 模板文件的根路径，可以从此文件目录下，获取到所有的视图模板文件
     */
    private File templateRootDir;

    public RAYViewResolver(String templateRoot)
    {
        // 获取到从类加载器中加载到的对应文件路径的名称
        String templateRootPath = Objects.requireNonNull(this.getClass().getClassLoader().getResource(templateRoot)).getFile();
        // 拿到对应的文件对象，保存下来
        this.templateRootDir = new File(templateRootPath);
    }

    /**
     * 根据视图名称解析出对应的视图对象
     *
     * @param viewName 视图名称
     * @return RAYView
     */
    public RAYView resolveViewName(String viewName)
    {

        if (null == viewName || "".equals(viewName.trim()))
        {
            return null;
        }
        // 处理文件后缀
        viewName = viewName.endsWith(DEFAULT_TEMPLATE_SUFFIX) ? viewName : (viewName + DEFAULT_TEMPLATE_SUFFIX);
        // 视图文件对象
        File templateFile = new File((templateRootDir.getPath() + "/" + viewName).replaceAll("/+", "/"));
        // 返回一个新的视图对象
        return new RAYView(templateFile);
    }

}
